#pragma once

#include "fxcc/core/graph/common/pch.h"
#include "fxcc/core/graph/common/MaterialData.h"
#include "fxcc/core/graph/common/TextureMaps.h"

namespace fxcc::graph::common
{

	struct MaterialNativeDataMap
	{
		MetaMapIndex m_Index;
		std::shared_ptr<fxcc::graph::common::MaterialData> m_Value;
		bool OnLoad();
	};


	struct EffectToken
	{
		std::string m_Key;
	};

	struct MaterialView :public fxcc::Base
	{
		MaterialNativeDataMap m_NativeDataMap;

		EffectToken m_EffectToken;

		Params m_Params;
		
		TextureMaps m_Textures;
		
		void LoadNativeData();

		void LoadTextures();
		
		void OnShaderChanged();

		void OnLoad();

		void LoadPropertiesFromSource();
		
	};
};